/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.uoc.tdp.test;


import edu.uoc.tdp.beans.proves.EstatProva;
import edu.uoc.tdp.beans.proves.Prova;
import edu.uoc.tdp.common.EOlympicsException;
import edu.uoc.tdp.common.EOlympicsExceptionProva;
import edu.uoc.tdp.common.EOlympicsExceptionRonda;
import edu.uoc.tdp.common.TDSLanguageUtils;
import edu.uoc.tdp.bbdd.GestorDiscConnexio;
import edu.uoc.tdp.beans.conexio.ResponsableEvents;
import edu.uoc.tdp.beans.proves.PreguntaResposta;
import edu.uoc.tdp.beans.proves.RondaEliminatoria;
import edu.uoc.tdp.beans.proves.RondaFinal;
import edu.uoc.tdp.client.proves.PanelControlInscripcions;
import edu.uoc.tdp.client.proves.PanelMantenimentGestioProves;
import edu.uoc.tdp.client.proves.PanelTancarProves;
import edu.uoc.tdp.common.EOlympicsUtils;
import edu.uoc.tdp.servidor.bbdd.proves.*;
import edu.uoc.tdp.servidor.impl.proves.RemotProvesImpl;
import java.rmi.RemoteException;
import java.sql.Connection;
import java.text.ParseException;
import java.util.Date;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;

import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author xmarti
 */

//TODO XMARTI 
// una altra proposta: MILLOR FER SERVIR java.util.date i simpledateFormat i llavors al gestor passar-la a sql.date

// em parlem 
// s'accepten suggerencies, ;)
public class testProva {
    private static GestorDiscConnexio gestor;
    
    private static GestorProva gProva;
    private static GestorRonda gRonda;
    private static Connection connexio;
      /*public static void main(String args[]) throws SQLException, EOlympicsException {
        TDSLanguageUtils.setDefaultLanguage("edu/uoc/tdp/i18n/messages"); 
        Date dIni= null;
        Date dFi=null;
        EOlympicsUtils utils = new EOlympicsUtils();

        List<PreguntaResposta>preguntes=new ArrayList<PreguntaResposta>();
        preguntes.add(new PreguntaResposta(1,"A"));
        preguntes.add(new PreguntaResposta(2,"B"));
        preguntes.add(new PreguntaResposta(3,"B"));
        preguntes.add(new PreguntaResposta(4,"C"));
        
        List<Prova> proves= new ArrayList<Prova>();
        //dIni=Date.valueOf("01-01-2012");
        
        gestor= new GestorDiscConnexio();
        gestor.obreConnexioBD();
        connexio=gestor.getConnexio();
        gProva= new GestorProva(gestor);
        gRonda=new GestorRonda(gestor);
        try{
            connexio.setAutoCommit(false);
            RondaEliminatoria rEliminatoria;
            RondaFinal rFinal;
            dIni= EOlympicsUtils.getDate("1-5-2012");
            dFi= EOlympicsUtils.getDate("2-5-2012");
            Prova prova = new Prova(50,"prova modificada",dIni,dFi,20);
          
            
            
             prova = new Prova(1,"Commiti final Prova",dIni,dFi,20,EstatProva.INICIAL);
            rEliminatoria=new RondaEliminatoria(4,dIni,dFi,preguntes);
            rFinal=new RondaFinal(4,dIni,dFi,preguntes);
            
            prova.setRondaEliminatoria((RondaEliminatoria)rEliminatoria);
            
             int idProva=gProva.guardarProva(prova);
            
            gRonda.setAltaRondaEliminatoria(idProva, rEliminatoria);
            gRonda.setAltaRondaFinal(idProva, rFinal);
            
            //public Ronda(Integer pNombrePreguntes,Date pDataIniRealitzacio, Date pDataFiRealitzacio,
            //     List<PreguntaResposta>pRespostesCorrectes)
            
            
            //System.out.println("Prova Creada:"+gProva.setAltaProva(prova));
            prova=gProva.getProva(idProva);
            if (prova!=null)
            System.out.println("ok:& "+ prova.getDataIniInscripcio());
            prova.setEstat(EstatProva.TANCADA);            
           gProva.guardarProva(prova);
           proves=gProva.getProvesEdicio();
            for(Prova pre:proves){
                //estic aqui falta comprovar que es carreguem bé les rondes i les preguntes correctes. 
                //estic per fer-ho tot a prova 
                
                rEliminatoria=gRonda.getRondaEliminatoria(pre.getIdProva());
                rFinal=gRonda.getRondaFinal(pre.getIdProva());
                pre.setRondaEliminatoria(rEliminatoria);
                pre.setRondaFinal(rFinal);
                System.out.println("Prova:  "+ pre.getIdProva()+ " " + pre.getDescripcio());
                System.out.println("RondaFInal:  "+ EOlympicsUtils.getStringDate(pre.getRondaFinal().getDataIniRealitzacio()));
            }
            connexio.commit();
            
        
        }catch (SQLException sqle){
            connexio.rollback();
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
            
        }
        
        
        gestor.tancaConnexioBD();
    }

  */

//public static void main(String args[]) throws SQLException, EOlympicsException {
//        gestor= new GestorDiscConnexio();
//        gestor.obreConnexioBD();
//        connexio=gestor.getConnexio();
//        gProva= new GestorProva(gestor);
//        TDSLanguageUtils.setDefaultLanguage("edu/uoc/tdp/i18n/messages"); 
//        List<Prova> proves=null;
//        String iniInscripcio="01/01/2001";
//        String fiInscripcio="01/01/2015";
//        String fiRealitzacio="01/01/2015";
//        String iniRealitzacio="01/01/2001";
//        try {
//            proves = gProva.getProves("C", EOlympicsUtils.getDate(iniInscripcio), EOlympicsUtils.getDate(fiInscripcio), EOlympicsUtils.getDate(iniRealitzacio),EOlympicsUtils.getDate(fiRealitzacio));
//        } catch (ParseException ex) {
//             System.out.println(ex.getMessage());
//            throw new EOlympicsException(EOlympicsException.ERR_DATE);            
//        }
//        
//}
//    public static void main(String args[]) throws SQLException, EOlympicsException, ParseException, EOlympicsExceptionProva, EOlympicsExceptionRonda {
//        gestor= new GestorDiscConnexio();
//        gestor.obreConnexioBD();
//        connexio=gestor.getConnexio();
//        gProva= new GestorProva(gestor);
//        gRonda=new GestorRonda(gestor);
//        TDSLanguageUtils.setDefaultLanguage("edu/uoc/tdp/i18n/messages"); 
//        List<Prova> proves=null;
//        String iniInscripcio="01/01/2001";
//        String fiInscripcio="01/01/2015";
//        String fiRealitzacio="01/01/2015";
//        String iniRealitzacio="01/01/2001";
//       
//            //Prova prova=gProva.getProva(10);
//            proves = gProva.getProves("h", EOlympicsUtils.getDate(iniInscripcio), EOlympicsUtils.getDate(fiInscripcio), EOlympicsUtils.getDate(iniRealitzacio),EOlympicsUtils.getDate(fiRealitzacio));
//            for(Prova pre:proves){
//                pre.setRondaEliminatoria(gRonda.getRondaEliminatoria(pre.getIdProva()));
//                pre.setRondaFinal(gRonda.getRondaFinal(pre.getIdProva()));
//                //System.out.println(pre.getRondaEliminatoria().getRespostesRonda());
//                System.out.println(pre);
//            }
//            
//       
//        
//}
//    public static void main(String args[])throws ParseException, EOlympicsException, RemoteException {
//        gestor= new GestorDiscConnexio();
//        gestor.obreConnexioBD();
////        connexio=gestor.getConnexio();
////        gProva= new GestorProva(gestor);
////        gRonda=new GestorRonda(gestor);
//        TDSLanguageUtils.setDefaultLanguage("edu/uoc/tdp/i18n/messages"); 
//        //List<Prova> proves=null;
//          try{
//        /*Date iniInscripcio=EOlympicsUtils.getDate("01/02/2001");
//        Date fiInscripcio=EOlympicsUtils.getDate("15/02/2001");
//        Date iniClassificacioE=EOlympicsUtils.getDate("01/01/2001");
//        Date fiClassificacioE=EOlympicsUtils.getDate("01/01/2001");
//        Date iniClassificacioF=EOlympicsUtils.getDate("01/02/2001");
//        Date fiClassificacioF=EOlympicsUtils.getDate("02/02/2001");
//        
//        Date dataCreacio=EOlympicsUtils.getDate("01/01/2001");
//        Date dataModificacio=EOlympicsUtils.getDate("01/01/2001");
//        Date dataCancelacio=EOlympicsUtils.getDate("01/01/2001");
//        
//        
//        Prova prova=new Prova(43,"ProvaTest43 no te eliminatoria",iniInscripcio,fiInscripcio,15);
//        
//        
//        
//        List<PreguntaResposta> llistaP=new ArrayList<PreguntaResposta>();
//        llistaP.add(new PreguntaResposta(1,"A"));
//        llistaP.add(new PreguntaResposta(2,"B"));
//        llistaP.add(new PreguntaResposta(3,"C"));
//        llistaP.add(new PreguntaResposta(4,"D"));        
//        RondaEliminatoria re=new RondaEliminatoria(4,iniClassificacioE,fiClassificacioE,llistaP);
//        RondaFinal rf=new RondaFinal(4,iniClassificacioF,fiClassificacioF,llistaP);
//        prova.setRondaEliminatoria(re);
//        prova.setRondaFinal(rf);
//       // prova.setDataCreacio(dataCreacio);
//        //prova.setDataModificacio(dataModificacio);
//        //prova.setDataEsborrat(dataCancelacio);
//        
//        //prova.setEstat(EstatProva.TANCADA);
//        
//        //re.setDataAlta(dataCreacio);
//        //re.setDataBaixa(dataCancelacio);
//        //re.setDataModificacio(dataModificacio);
////        rf.setDataAlta(dataCreacio);
////        rf.setDataBaixa(dataCancelacio);
////        rf.setDataModificacio(dataModificacio);
////        PanelMantenimentGestioProves panel= new PanelMantenimentGestioProves(prova);        
////        panel.setVisible(true);
//        */
//        RemotProvesImpl remot = new RemotProvesImpl();        
//        ResponsableEvents usuariAlta=new ResponsableEvents();
//        usuariAlta.setIdIntern(1);
//        ResponsableEvents usuariBaixa=new ResponsableEvents();
//        usuariBaixa.setIdIntern(6);
//        ResponsableEvents usuariMod=new ResponsableEvents();
//        usuariMod.setIdIntern(8);
//        Prova prova=remot.getProva(49); 
////        GestorProva gProva= new GestorProva(gestor);
////        GestorRonda gRonda=new GestorRonda(gestor); 
//        prova.setUsuariCreacio(usuariAlta);
//        prova.setUsuariModificacio(usuariMod);
//        prova.setUsuariEsborrat(usuariBaixa);
//        if(prova.getRondaEliminatoria()!=null){
//            prova.getRondaEliminatoria().setUsuariAlta(usuariAlta);
//            prova.getRondaEliminatoria().setUsuariBaixa(usuariBaixa);
//            prova.getRondaEliminatoria().setUsuariModificacio(usuariMod);
//        }
//        if(prova.getRondaFinal()!=null){
//            prova.getRondaFinal().setUsuariAlta(usuariAlta);
//            prova.getRondaFinal().setUsuariBaixa(usuariBaixa);
//            prova.getRondaFinal().setUsuariModificacio(usuariMod);
//        }
//        Integer idProva;
//             idProva= remot.setProva(prova); 
//            //idProva= remot.clearProva(prova); 
////            prova=remot.getProva(idProva);
//            System.out.println(prova);
//        }catch (Exception e){
//            JOptionPane.showMessageDialog(null, e.getMessage(), "ERR", JOptionPane.ERROR_MESSAGE);                        
//        } 
//        
//        
//        //aqui la modifico
////        if(prova!=null){
////            prova.setUsuariModificacio(usuariAlta);
////            prova.setUsuariEsborrat(usuariAlta);
////            prova.setEstat(EstatProva.CANCELADA);
////        }
//        /*
//        if(prova!=null){
//                    
//        RondaEliminatoria ronda=prova.getRondaEliminatoria();
//        if (ronda!=null){
//            ronda.setUsuariModificacio(usuariAlta);
//            ronda.setUsuariBaixa(usuariAlta);
//        }
//        
//        RondaFinal rondaf=prova.getRondaFinal();
//        if(ronda!=null){
//            rondaf.setUsuariModificacio(usuariAlta);
//            rondaf.setUsuariBaixa(usuariAlta);
//        }
//            try {
//                idProva=remot.clearProva(prova);
//            } catch (Exception ex) {
//                JOptionPane.showMessageDialog(null, ex.getMessage(), "ERR", JOptionPane.ERROR_MESSAGE);                        
//            }
//        System.out.println("Cancelada: "+ prova);
//        }else{
//            System.out.println(prova);
//        }
//        */
//          System.exit(0);
//        
//}
//    
//    public static void main(String args[])throws ParseException, EOlympicsException, RemoteException {
////        gestor= new GestorDiscConnexio();
////        gestor.obreConnexioBD();
////        connexio=gestor.getConnexio();
////        gProva= new GestorProva(gestor);
//        RemotProvesImpl remot= new RemotProvesImpl();
//        
//        
//        //gRonda=new GestorRonda(gestor);
//        TDSLanguageUtils.setDefaultLanguage("edu/uoc/tdp/i18n/messages"); 
//        Prova prova=remot.getProva(45);
//        PanelMantenimentGestioProves panel= new PanelMantenimentGestioProves(new Prova(-1,""));        
//        panel.setVisible(true);
//        
//    }
    public static void main(String args[])throws ParseException, EOlympicsException, RemoteException, EOlympicsExceptionProva, EOlympicsExceptionRonda {
//        gestor= new GestorDiscConnexio();
//        gestor.obreConnexioBD();
//        connexio=gestor.getConnexio();
//        gProva= new GestorProva(gestor);
//        Prova prova= new Prova();
//        prova.setEstat(EstatProva.valueOf("COMPETICIOFINAL"));
//        System.out.println(prova.getEstat());
         RemotProvesImpl remot= new  RemotProvesImpl();
        
        
        //gRonda=new GestorRonda(gestor);
        TDSLanguageUtils.setDefaultLanguage("edu/uoc/tdp/i18n/messages"); 
        
        List<Prova> proves=remot. getProvesPerTancar();
        for(Prova pre:proves){
            System.out.println(pre.getDataFiInscripcio().toString());
        }
        
        PanelTancarProves panel= new PanelTancarProves(proves);  
        panel.setLocationRelativeTo(null);
        panel.setVisible(true);
       
    }
    
//       public static void main(String args[])throws ParseException, EOlympicsException, RemoteException, EOlympicsExceptionProva, EOlympicsExceptionRonda {
////        gestor= new GestorDiscConnexio();
////        gestor.obreConnexioBD();
////        connexio=gestor.getConnexio();
////        gProva= new GestorProva(gestor);
//         RemotProvesImpl remot= new  RemotProvesImpl();
//        
//        
//        //gRonda=new GestorRonda(gestor);
//        TDSLanguageUtils.setDefaultLanguage("edu/uoc/tdp/i18n/messages"); 
//        remot.tancarParticipacio(119, "E");
////        List<Prova> proves=remot.getProvesInscripcions();
////        for(Prova pre:proves){
////            System.out.println(pre.getDataFiInscripcio().toString());
////        }
////        
////        PanelTancarProves panel= new PanelTancarProves(proves);  
////        panel.setLocationRelativeTo(null);
////        panel.setVisible(true);
//       
//    }
    
}
